#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# @Time: 2024-02-20 21:45

# @Despcription: 元祖的定义，及使用

#----------------------------------------------------------
# 元祖的定义与使用
#----------------------------------------------------------
if(0):
    # 只要逗号连接的数据就可以构成元祖
    var_tuple = "hello", 10, [1, 2, 3]
    print(var_tuple)    #  ('hello', 10, [1, 2, 3])

    # 定义空元组
    var_tuple = ()
    print(var_tuple)    # ()

    # 定义只有一个元素的元祖， 不能像下面这样定义
    var_tuple = ("hello")
    print(var_tuple)    # hello
    # 应该使用单个逗号
    var_tuple = "hello", 
    print(var_tuple)    # ('hello',)

    # TODO: 元祖的元素本身不可修改, 但是元祖中包含的可变元素中的子元素是可以修改的
    var_tuple = (1, [12, 13, 14], 3)
    var_tuple[1][0] = 100
    print(var_tuple)    # (1, [100, 13, 14], 3)

# 元祖的打包与解包组合， 构成多重赋值
if(1):
    # 打包多个值到元祖中
    var_tuple = 1, "hello", [1, 2, 3]
    # 解包并多重赋值, 解包时， 等号左边的变量数要与右边元祖中的元素个数一致
    a, b, c = var_tuple
    print("a:{}, b:{}, c:{}".format(a, b, c))   # a:1, b:hello, c:[1, 2, 3]
    
# 总结
# -------------------------------------------------------------------
"""
字符串， 列表， 元祖， 都属于序列
序列共有的操作就是可以通过下标或者切片访问
明码字符串和元祖都是immutable的, 不可通过下标或者切片修改
"""
